package niuke;

import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

/**
 * 输入一个正整数数组，把数组里所有数字拼接起来排成一个数，
 * 打印能拼接出的所有数字中最小的一个。例如输入数组{3，32，321}，
 * 则打印出这三个数字能排成的最小数字为321323。
 */
public class PrintMinNum {
    public String composeMinNumber(int[] numbers) {
        List<Integer> numList = new LinkedList<>();
        for (int num : numbers) {
            numList.add(num);
        }
        Collections.sort(numList, (num1, num2) -> {
            String numStr1 = num1 + "" + num2;
            String numStr2 = num2 + "" + num1;
            int ret = 0;
            if (Integer.valueOf(numStr1) > Integer.valueOf(numStr2)) {
                ret = 1;
            } else if (Integer.valueOf(numStr1) < Integer.valueOf(numStr2)) {
                ret = -1;
            }
            return ret;
        });
        String s = "";
        for (Integer num : numList) {
            s += num;
        }
        return s;
    }
}
